The present disclosure generally relates to data storage systems using flash memory technologies. More specifically, the present disclosure relates to controlling flash memory systems to substantially extend their useful lifetime or endurance.
Flash memory is typically divided into several blocks, each of which is individually erasable. All flash memory cells within a block are typically erased together. Flash memory cells each have a limited useful lifetime in terms of the number of times that they can be reprogrammed or erased. This limitation may often be due to electrons becoming trapped in the respective gate and tunnel dielectric layers during repetitive programming. Repeated erasure of a block tends to wear out the cells in the block leading to a reduced capability to distinguish between the erased state and the programmed state, and resulting in a longer time required to erase the block.
The ability of a Flash memory device to withstand wear is often called “endurance”. The endurance may be specified in terms of the minimum or the average number of times that each Flash block may be erased without encountering significant failures. Endurance numbers are currently in the range of hundreds of thousands of cycles in the case of single level cell (“SLC”) devices, and in the range of tens of thousands of cycles in the case of multi level cell (“MLC”) devices. Repeated and frequent writes to a single block, or to a small number of blocks, will bring the onset of failures sooner and end the useful lifetime of the flash device more quickly.
Wear-leveling is a class of techniques, typically implemented in firmware, for balancing the erase counts of physical blocks to better utilize the expected lifetime of NAND flash devices, for example. If the write operations can be more evenly distributed among all blocks of the device, each block will experience closer to the maximum number of erases that it can endure before other blocks exceed the maximum. Thus, the onset of failures may be substantially delayed, thereby increasing the useful lifetime and endurance of the Flash memory device.